import scala.collection.mutable
import TrafficLightColor._

object chapter6 {
  private var lastNumber = 0

  def main(args: Array[String]): Unit = {
    // Scala 没有 static (object 类似)
    // 类与类名相同的伴生(companion)对象， 可以访问私有属性

    // apply 方法
    val test1 = Array(100)  // 创建一个元素100的Array
    val test2 = new Array(100)  // 创建100个元素null的Array

    // 枚举 TrafficLightColor
    for (c <- TrafficLightColor.values) println(s"${c.id}: $c")
    // 取值方法
//    TrafficLightColor.Red
    TrafficLightColor.withName("Red")
    TrafficLightColor(0)
  }
}

// 扩展类或特质的对象
abstract class UndoableAction(val description: String) {
  def undo(): Unit

  def redo(): Unit
}

object DoNothingAction extends UndoableAction("Do Nothing") {
  override def undo(): Unit = {}

  override def redo(): Unit = {}
}